package co.edu.uniquindio.proyecto.entidades;

import java.io.Serializable;
import java.util.List;

import javax.persistence.*;

/**
 * Entity implementation class for Entity: Empresa
 * Clase que representa la entidad Empresa
 *
 * @author Johan Sebastian Giraldo Hurtado
 * @author Universidad del Quindio
 * @version 1.0
 * @since 17/03/2014
 *
 */
@Entity
public class Empresa implements Serializable {

	/**
	 * Atributo que contiene el valor de serialVersionUID dentro de la clase
	 */
	private static final long serialVersionUID = 1L;

	/**
	 * Atributo que contiene el valor de Id dentro de la clase
	 */
	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	private Integer Id;
	
	/**
	 *  Atributo que contiene el valor de nombre dentro de la clase
	 */
	private String nombre;
	
	/**
	 *  Atributo que contiene el valor de url dentro de la clase
	 */
	private String url;
	
	/**
	 *  Atributo que contiene el valor de telefono dentro de la clase
	 */
	private int telefono;
	
	/**
	 *  Atributo que contiene el valor de personas dentro de la clase
	 */
	@OneToMany(mappedBy = "empresa")
	private List<Persona> personas;
	
	/**
	 * Este metodo permite obtener el valor del atributo personas
	 * @return Retorna el valor del atributo personas
	 */
	public List<Persona> getPersonas() {
		return personas;
	}

	/**
	 * Este metodo permite asignar un valor al atributo personas
	 * @param personas El valor a ser asginado al atributo personas
	 */
	public void setPersonas(List<Persona> personas) {
		this.personas = personas;
	}

	/**
	 * Este metodo permite obtener el valor del atributo id
	 * @return Retorna el valor del atributo id
	 */
	public Integer getId() {
		return Id;
	}

	/**
	 * Este metodo permite asignar un valor al atributo id
	 * @param id El valor a ser asginado al atributo id
	 */
	public void setId(Integer id) {
		Id = id;
	}

	/**
	 * Este metodo permite obtener el valor del atributo nombre
	 * @return Retorna el valor del atributo nombre
	 */
	public String getNombre() {
		return nombre;
	}

	/**
	 * Este metodo permite asignar un valor al atributo nombre
	 * @param nombre El valor a ser asginado al atributo nombre
	 */
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	/**
	 * Este metodo permite obtener el valor del atributo url
	 * @return Retorna el valor del atributo url
	 */
	public String getUrl() {
		return url;
	}

	/**
	 * Este metodo permite asignar un valor al atributo url
	 * @param url El valor a ser asginado al atributo url
	 */
	public void setUrl(String url) {
		this.url = url;
	}

	/**
	 * Este metodo permite obtener el valor del atributo telefono
	 * @return Retorna el valor del atributo telefono
	 */
	public int getTelefono() {
		return telefono;
	}

	/**
	 * Este metodo permite asignar un valor al atributo telefono
	 * @param telefono El valor a ser asginado al atributo telefono
	 */
	public void setTelefono(int telefono) {
		this.telefono = telefono;
	}

	/* (non-Javadoc)
	 * @see java.lang.Object#hashCode()
	 */
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((Id == null) ? 0 : Id.hashCode());
		return result;
	}

	/* (non-Javadoc)
	 * @see java.lang.Object#equals(java.lang.Object)
	 */
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Empresa other = (Empresa) obj;
		if (Id == null) {
			if (other.Id != null)
				return false;
		} else if (!Id.equals(other.Id))
			return false;
		return true;
	}
   
}
